/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.sapra.abc;
import java.util.List;
import nextapp.echo2.app.Alignment;
import nextapp.echo2.app.Button;
import nextapp.echo2.app.Color;
import nextapp.echo2.app.Column;
import nextapp.echo2.app.Extent;
import nextapp.echo2.app.Insets;
import nextapp.echo2.app.Row;
import nextapp.echo2.app.SelectField;
import nextapp.echo2.app.TextField;
import nextapp.echo2.app.WindowPane;
import nextapp.echo2.app.event.ActionEvent;
import nextapp.echo2.app.event.ActionListener;
import nextapp.echo2.app.list.DefaultListModel;
import org.sapra.dao.Corporativo;
import org.sapra.echo.Helpers;
import org.sapra.echo.wAviso;
import org.sapra.main.vPrincipal;

/**
 *
 * @author cobain
 */
public class vCorporativo extends nextapp.echo2.app.ContentPane{

    //OBJETOS INICIALES
    Column mParent=null;
    private vPrincipal princ;
    Corporativo corp;

    public final static int EDITAR = 2;
    public final static int NUEVO = 1;
    public final static int BORRAR = 3;
    public static int accion;
    int sel;
    List<Corporativo> corps;

    //COMPONENTES
    private Button bNuevo;
    private Button bEditar;
    private Button bGuardar;
    private Button bCancelar;
    private Button bBorrar;
    private Button bConfirmar;
    private SelectField lista_corp;
    private TextField nom_corporativo;
    private Row row4, row5, row6, row7, row8;

    public vCorporativo(vPrincipal princ) {
        super();
        this.princ=princ;
        initComponents();
    }

    public vCorporativo(Column parent){
        mParent = parent;
        initComponents();
    }

    private void initComponents(){
            Column col1;


        if(mParent != null) col1 = mParent;
        else{
            col1 = Helpers.Column("Default", new Extent(5),this);
            Row x=princ.getMenu();
            x.setAlignment(Alignment.ALIGN_CENTER);
            col1.add(x);
        }
            //ENCABEZADO.
            Row row1=Helpers.Row("Default", new Extent(5), col1);
            Helpers.Label("LISTA DE CORPORATIVOS Y ACCIONES.", new Color(0x011dac), row1);
            row1.setAlignment(Alignment.ALIGN_CENTER);

            Row row2=Helpers.Row("Default", new Extent(5), col1);
            Helpers.Label("SELECCIONE UNA ACCION.", Color.BLACK, row2);
            row2.setAlignment(Alignment.ALIGN_CENTER);

            //BOTONES DE ACCION.
            Row row3=Helpers.Row("Default", new Extent(10), col1);
            bNuevo=Helpers.Button("NUEVO", row3, new ActionListener(){public void actionPerformed(ActionEvent e) {menuNuevo(e);}});
            bEditar=Helpers.Button("EDITAR", row3, new ActionListener(){public void actionPerformed(ActionEvent e) {menuEditar(e);}});
            bBorrar=Helpers.Button("BORRAR", row3, new ActionListener(){public void actionPerformed(ActionEvent e) {menuBorrar(e);}});
            row3.setAlignment(Alignment.ALIGN_CENTER);

            //FILA DE DATOS.
            row4=Helpers.Row("Default", new Extent(5), col1);
            Helpers.Label("SELECCIONE UN CORPORATIVO.", Color.BLACK, row4);
            row4.setAlignment(Alignment.ALIGN_CENTER);

            row5=Helpers.Row("Default", new Extent(5), col1);
            lista_corp=Helpers.SelectField(row5, new ActionListener(){public void actionPerformed(ActionEvent e) {Seleccion(e);}});
            lista_corp.setWidth(new Extent(450));
            row5.setAlignment(Alignment.ALIGN_CENTER);

            row6=Helpers.Row("Default", new Extent(5), col1);
            Helpers.Label("NOMBRE DEL CORPORATIVO:", Color.BLACK, row6);
            nom_corporativo=Helpers.Text("", row6);
            row6.setAlignment(Alignment.ALIGN_CENTER);

            //BOTONES GUARDAR Y CANCELAR
            row7=Helpers.Row("Default", new Extent(5), col1);
            bGuardar=Helpers.Button("GUARDAR", row7, new ActionListener(){public void actionPerformed(ActionEvent e) {menuGuardar(e);}});
            bCancelar=Helpers.Button("CANCELAR", row7, new ActionListener(){public void actionPerformed(ActionEvent e) {menuCancelar(e);}});
            row7.setAlignment(Alignment.ALIGN_CENTER);

            row8=Helpers.Row("Default", new Extent(5), col1);
            bConfirmar=Helpers.Button("CONFIRMAR BORRAR", row8, new ActionListener(){public void actionPerformed(ActionEvent e) {confirmarBorrar(e);}});
            bCancelar=Helpers.Button("CANCELAR", row8, new ActionListener(){public void actionPerformed(ActionEvent e) {menuCancelar(e);}});
            row8.setAlignment(Alignment.ALIGN_CENTER);
            FirstTime();

    }

       void FirstTime(){

        UpdateView();

       }

        //ACTUALIZAR LA LISTA
        void UpdateView(){
        List<Corporativo> corps= dCorporativo.getCorporativo(0,null);
        lista_corp.setModel(new DefaultListModel(corps.toArray()));
        corp= null;
        row4.setVisible(false);
        row5.setVisible(false);
        row6.setVisible(false);
        row7.setVisible(false);
        row8.setVisible(false);

       }

        void Seleccion(ActionEvent e){
        corp = (Corporativo) lista_corp.getSelectedItem();
         nom_corporativo.setText(lista_corp.getSelectedItem().toString());
        if(corp == null) return;

       }

       //ACCIONES DE LOS BOTONES.
        void menuNuevo(ActionEvent e){
            row6.setVisible(true);
            row7.setVisible(true);
            accion=NUEVO;

        }

        void menuEditar(ActionEvent e){
        row4.setVisible(true);
        row5.setVisible(true);
        row6.setVisible(true);
        row7.setVisible(true);

        accion=EDITAR;

        }

        void menuGuardar(ActionEvent e){

        String msj=null;
        msj=Validar();
        if(msj!=null){
             add(new wAviso("Error", msj));
             return ;
        }

            if(accion==NUEVO){
            String nombre = nom_corporativo.getText();
            dCorporativo.NuevoCorporativo(nombre);
            add(new wAviso("Exito!!!","CORPORATIVO AGREGADO CORRECTAMENTE"));
            row6.setVisible(false);
            row7.setVisible(false);
            }

          if(accion==EDITAR){
           corp = (Corporativo) lista_corp.getSelectedItem();       
           if(corp==null){
               add(new wAviso("Error", "NO HAY SELECCION"));
           }
          else{
           String nombre=nom_corporativo.getText();
           dCorporativo.editarCorporativo(corp, nombre);
           add(new wAviso("Exito!!!","CORPORATIVO MODIFICADO CORRECTAMENTE"));
          }
        }
        CleanFields();
        UpdateView();
    }

        void menuBorrar(ActionEvent e){
        row5.setVisible(true);
        row8.setVisible(true);
        accion=BORRAR;

        }

        void menuCancelar(ActionEvent e){

            ocultarFilas();

        }

        public void confirmarBorrar(ActionEvent e){
                 corp = (Corporativo) lista_corp.getSelectedItem();
                 /*int res=dCorporativo.borrarCorporativo(corp);
                if(corp == null)return;
                if (res == 0){
                    add(new wAviso("ERROR","NO SE PUEDE BORRAR EL REGISTRO SELECCIONADO"));
                }
             else{
                     add(new wAviso("Exito!!!","CORPORATIVO BORRADO CORRECTAMENTE"));
             }*/
                 if(corp==null){
                     add(new wAviso("ERROR","NO EXISTE SELECCION , DEBE SELECCIONAR PARA CONTINUAR"));
                 }
                 else{
                         int res=dCorporativo.borrarCorporativo(corp);
                         if(res>0){
                                          //dCorporativo.borrarCorporativo(corp);
                             add(new wAviso("EXITO","CORPORATIVO BORRADO CON EXITO"));

                         }
                        else {
                                add(new wAviso("ERROR","NO SE PUEDE BORRAR EL CORPORATIVO, TIENE REGISTROS ASIGNADOS"));
                         }

                  }
                  UpdateView();
        }

        //METODOS DE PRESENTACION.
        public void CleanFields(){
            nom_corporativo.setText("");
        }

        public void ocultarFilas(){
                        if(accion==NUEVO){
        row6.setVisible(false);
        row7.setVisible(false);
            }
            if(accion==EDITAR){
        row4.setVisible(false);
        row5.setVisible(false);
        row6.setVisible(false);
        row7.setVisible(false);
            }
            if(accion==BORRAR){
        row5.setVisible(false);
        row8.setVisible(false);

            }
        }

        private String Validar(){

        String msj1="Formato Erroneo para ";
        String msj3="Favor de Llenar el campo";
        boolean b,c;
        b=isNumeric(nom_corporativo.getText());
        if(nom_corporativo.getText().trim().equals(""))return msj3+" NOMBRE";
        if(b==true)return msj1+" NOMBRE";
        if(accion==NUEVO){
             List<Corporativo> corplist=dCorporativo.getCorporativo(1, nom_corporativo.getText().trim());
              if(corplist.size()>0)return " YA EXISTE  NOMBRE DE CORPORATIVO";
         }
            return null;
        }

        //VALIDAR CADENA DEL CAMPO DE TEXTO
         private  boolean isNumeric(String cadena){
         cadena=nom_corporativo.getText();
         try {
              Integer.parseInt(cadena);
              return true;
             }
         catch (NumberFormatException nfe)
         {
           return false;

         }

      }
       /*private boolean validarNombre(String cadena){
             //cadena=nom_universidad.getText();
             List<Universidad> univs2= dUniversidad.getUniversidades();
             for(int i=0;i<univs2.size();i++)
             {
                 if(univs.get(i).toString().equals(cadena));
                 return true;
             }
             return false;
         }*/

}
        